﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HotelManagement.BLO;
using HotelManagement.DTO;

namespace HotelManagement.Rent
{
    public partial class RentRoomManagement : UserControl
    {
        public static List<CustomerDTO> lstCustomer;
        public static DataTable tblCustomerDetail;
        public static RoomDTO room;
        
        public static RoomTypeDTO roomType;
        
        public static List<string> lstRoomEquipment;

        private int _rentID;
        private DataTable tblRentBookInAndCheckIn;

        public static DateTime _checkDate;

        string pathAva = CheckInput.IMAGES_DIRECTORY + "available.png";
        string pathDel = CheckInput.IMAGES_DIRECTORY + "deleted.png";
        string pathAli = CheckInput.IMAGES_DIRECTORY + "alived.png";
        public RentRoomManagement()
        {
            InitializeComponent();
            Init();
        }
        private void Init()
        {
            lstCustomer = new List<CustomerDTO>();
            tblCustomerDetail = new DataTable();

            room = new RoomDTO();
            roomType = new RoomTypeDTO();
            lstRoomEquipment = new List<string>();
            InitialGridView();
            UpdatecmbRentPaper();
        }

        private void InitializeDatagridview()
        {

        }

        private void InitialGridView()
        {
            try
            {

                //Thêm cột xoa khách hàng
                DataGridViewButtonColumn delete = new DataGridViewButtonColumn();
                delete.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                delete.Name = "DeleteColumn";
                delete.HeaderText = "Chọn";
                delete.Text = "Delete";
                delete.Visible = true;
                delete.UseColumnTextForButtonValue = true;
                delete.FlatStyle = FlatStyle.Popup;
                delete.CellTemplate.Style.BackColor = Color.CadetBlue;
                dataGridViewCustomer.Columns.Insert(0, delete);
                //Thêm cột đặt làm owner

                DataGridViewButtonColumn owner = new DataGridViewButtonColumn();
                owner.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                owner.Name = "OwnerColumn";
                owner.HeaderText = "Owner";
                owner.Text = "Owner";
                owner.Visible = true;
                owner.UseColumnTextForButtonValue = true;
                owner.FlatStyle = FlatStyle.Popup;
                owner.CellTemplate.Style.BackColor = Color.AliceBlue;
                dataGridViewCustomer.Columns.Insert(1, owner);

                //status.CellTemplate.Style
                DataGridViewImageColumn status = new DataGridViewImageColumn();
                status.Name = "StatusColumn";
                status.HeaderText = "TT";
                
                status.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                status.Visible = true;
                
                //string pathAli = CheckInput.IMAGES_DIRECTORY + "alive.png";
                status.Image = Image.FromFile(pathAva);
                dataGridViewCustomer.Columns.Insert(2, status);

                dataGridViewCustomer.Columns.Add("CustomerID", "Mã khách");
                dataGridViewCustomer.Columns.Add("Name", "Họ Tên");
                dataGridViewCustomer.Columns.Add("Gender", "Giới Tính");
                dataGridViewCustomer.Columns.Add("IDNo", "CMND");
                dataGridViewCustomer.Columns.Add("TypeName", "Loại khách");
                dataGridViewCustomer.Columns.Add("Birth", "Ngày sinh");
                dataGridViewCustomer.Columns.Add("PhoneNumber", "Số DT");
                dataGridViewCustomer.Columns.Add("Address", "Địa chỉ");
                dataGridViewCustomer.Columns.Add("Occupation", "Nghề nghiệp");
                dataGridViewCustomer.Columns.Add("Nationality", "Quốc tịch");
                dataGridViewCustomer.Columns.Add("EndDate", "EndDate");
                dataGridViewCustomer.Columns["EndDate"].Visible = false;
                dataGridViewCustomer.Columns.Add("Temp", "Temp");
                dataGridViewCustomer.Columns["Temp"].Visible = false;
                for (int i = 0; i < dataGridViewCustomer.Columns.Count; i++)
                {
                    if (i > 2)
                    {
                        dataGridViewCustomer.Columns[i].ReadOnly = true;
                    }
                }
            }
            catch (System.Exception ea)
            {

            }
        }
        
        /// <summary>
        /// Hàm này dùng để cập nhật dữ liệu cho datagridview
        /// nếu đã có khách trong danh sách thì không thêm vào nữa
        /// </summary>
        /// <returns></returns>
        private void RefreshDataGridView(bool isAdd)
        {
            if (isAdd==false)
            {
                dataGridViewCustomer.Rows.Clear();
            }
            CustomerTypeBLO bl = new CustomerTypeBLO();
            RentDetailBLO bloRD = new RentDetailBLO();
            DataTable tbl = new DataTable();
            tbl = bloRD.GetAllRentDetailOfARent(_rentID);
            

            for (int i = 0; i < lstCustomer.Count;i++)
            {
                int flag = 1;
                foreach (DataGridViewRow row in dataGridViewCustomer.Rows)
                {
                    if (lstCustomer[i].CustomerID==int.Parse(row.Cells["CustomerID"].Value.ToString()))
                    {
                        flag = 0;
                        break;
                    }
                }
                if (flag==1)
                {
                    try
                    {

                        DataGridViewRow row = new DataGridViewRow();
                        dataGridViewCustomer.Rows.Add(row);
                        int tam = dataGridViewCustomer.Rows.IndexOf(row);
                        dataGridViewCustomer.Rows[tam].Cells["CustomerID"].Value = lstCustomer[i].CustomerID;
                        dataGridViewCustomer.Rows[tam].Cells["Name"].Value = lstCustomer[i].Name;
                        dataGridViewCustomer.Rows[tam].Cells["Gender"].Value = lstCustomer[i].Gender;
                        dataGridViewCustomer.Rows[tam].Cells["IDNo"].Value = lstCustomer[i].IDNo_Passport;
                        dataGridViewCustomer.Rows[tam].Cells["TypeName"].Value = bl.GetNameFromID(lstCustomer[i].CusTypeID);
                        dataGridViewCustomer.Rows[tam].Cells["Birth"].Value = lstCustomer[i].BirthYear;
                        dataGridViewCustomer.Rows[tam].Cells["PhoneNumber"].Value = lstCustomer[i].PhoneNumber;
                        dataGridViewCustomer.Rows[tam].Cells["Address"].Value = lstCustomer[i].Address;
                        dataGridViewCustomer.Rows[tam].Cells["Occupation"].Value = lstCustomer[i].Occupation;
                        dataGridViewCustomer.Rows[tam].Cells["Nationality"].Value = lstCustomer[i].Nationality;
                        if (tbl!=null)
                        {
                            for (int j = 0; j < tbl.Rows.Count; j++)
                            {
                                if (lstCustomer[i].CustomerID.ToString() == tbl.Rows[j]["CustomerID"].ToString())
                                {
                                    dataGridViewCustomer.Rows[tam].Cells["EndDate"].Value = tbl.Rows[j]["EndDate"].ToString();
                                    dataGridViewCustomer.Rows[tam].Cells["Temp"].Value = tbl.Rows[j]["EndDate"].ToString();
                                    DateTime tamD = DateTime.Parse(tbl.Rows[j]["EndDate"].ToString());
                                    dataGridViewCustomer.Rows[tam].Cells["StatusColumn"].Value = (tamD < DateTime.Now) ? Image.FromFile(pathDel) : Image.FromFile(pathAli);
                                    
                                    break;
                                }
                            }
                        }
                    }
                    catch (System.Exception ea)
                    {
                        MessageBox.Show(ea.Message);
                    }
                }
                lstCustomer.RemoveAt(i);
                i--;
            }
        }
        /// <summary>
        /// Hàm RefreshInformation() dùng để cài giá trị cho các ToolBox trong  vùng thông tin
        /// Mỗi lần chọn lại một phòng thì hàm này đưuọc triệu gọi để cấp giá trị cho các toolbox
        /// Những biến tổng quát cần phải cập nhật trước khi chạy hàm này là:
        /// RoomDTO room;
        /// List<string> lstRoomEquipment
        /// </summary>
        /// <returns></returns>
        private void RefreshInformation()
        {
            RoomBLO bloR=new RoomBLO();
            RoomTypeBLO bloRT=new RoomTypeBLO();
            CustomerBLO bloC = new CustomerBLO();

            this.txtRoomID.Text = room.RoomID.ToString();
            txtRoomName.Text = room.RoomName;
            txtRoomTypeID.Text = room.RoomTypeID.ToString();
            RoomTypeDTO rT = bloRT.SelectARoomType(room.RoomTypeID);
            if (rT != null)
            {
                txtRoomTypeName.Text = rT.RoomTypeName;
            }
            else
                txtRoomTypeName.Text = "";
            txtDirection.Text = room.Direction;
            txtViews.Text = room.Views;
            txtStatus.Text = bloR.GetStatusNameFromStatusID(room.Status);
            txtNumOfBed.Text = room.NumOfBed.ToString();
            txtNumOfPerson.Text = room.NumOfPerson.ToString();
            if (rT != null)
            {
                txtPrice.Text = rT.Price.ToString();
            }
            else
                txtPrice.Text = "";
            //tạo ra chuỗi chứa các tiện nghi của phòng
            string strE = "";
            for (int i = 0; i < lstRoomEquipment.Count;i++ )
            {
                strE += lstRoomEquipment[i] + "; ";
            }
            txtEquipments.Text = strE;

            txtOwnerID.Text = room.LastOwner.ToString();
            
            CustomerDTO cust=bloC.GetCustomerFromID(int.Parse(txtOwnerID.Text));
            if (cust!=null)
            {
                txtOwnerName.Text = cust.Name;
                txtOwnerIDNo.Text = cust.IDNo_Passport;
            }else
            {
                txtOwnerName.Text = "";
                txtOwnerIDNo.Text = "";
            }
        }
        //===========================================================================//
        /*Hàm này dùng để gọi những phiếu thuê phòng hoặc phiếu đặt phòng và cập nhật và combobox cmbRentPaper
         * */
        public void UpdatecmbRentPaper()
        {
            RentBLO bloRent = new RentBLO();
            this.tblRentBookInAndCheckIn = bloRent.GetBookInAndCheckInRent();
            if (tblRentBookInAndCheckIn==null)
            {
                return;
            }
            List<string> lstRentBookInAndCheckIn = new List<string>();
            lstRentBookInAndCheckIn.Add("Chọn Phiếu");
            foreach (DataRow row in tblRentBookInAndCheckIn.Rows)
            {
                lstRentBookInAndCheckIn.Add(row["RentID"].ToString());
            }
            this.cmbRentPaper.DataSource = lstRentBookInAndCheckIn;
            cmbRentPaper.SelectedIndex = 0;
        }

        private void btnAddCustomer_Click(object sender, EventArgs e)
        {
            ShowThings frmST = new ShowThings(1);
            frmST.ShowDialog();
            RefreshDataGridView(true);
        }

        private void btnSelectRoom_Click(object sender, EventArgs e)
        {
            ShowThings frmST = new ShowThings(2);
            {
                frmST.ShowDialog();
                RefreshInformation();
            }
        }

        private void dataGridViewCustomer_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewRow row = new DataGridViewRow();
            try
            {
                row = dataGridViewCustomer.Rows[e.RowIndex];
                string colN = dataGridViewCustomer.Columns[e.ColumnIndex].Name;
                if (colN == "DeleteColumn")
                {
                    if (txtSetOwner.Text != "" && int.Parse(txtSetOwner.Text) > 0 && row.Cells["CustomerID"].Value.ToString() == txtSetOwner.Text)
                    {
                        MessageBox.Show("Không được xóa chủ phòng");
                        return;
                    }
                    if (cmbRentPaper.SelectedIndex != 0)
                    {
                        return;
                    }
                    dataGridViewCustomer.Rows.RemoveAt(e.RowIndex);
                }
                else
                    if (colN == "OwnerColumn")
                    {
                        txtSetOwner.Text = row.Cells["CustomerID"].Value.ToString();
                        txtOwnerName.Text = row.Cells["Name"].Value.ToString();
                        txtOwnerIDNo.Text = row.Cells["IDNo"].Value.ToString();

                    }
                    else
                        if (colN == "StatusColumn")
                        {
                            if (cmbRentPaper.SelectedIndex == 0)
                            {
                                return;
                            }
                            DateTime endD = DateTime.Parse(row.Cells["EndDate"].Value.ToString());
                            if (row.Cells["CustomerID"].Value.ToString()==txtOwnerID.Text)
                            {
                                return;
                            }
                            if (endD>=DateTime.Now)
                            {
                                row.Cells["StatusColumn"].Value = Image.FromFile(pathDel);
                                row.Cells["EndDate"].Value = DateTime.Now.ToString();
                            }else
                                {
                                	row.Cells["StatusColumn"].Value = Image.FromFile(pathAli);
                                    row.Cells["EndDate"].Value = row.Cells["Temp"].Value;
                                }

                            //RentDetailBLO bloRD = new RentDetailBLO();
                            //DataTable tbl = bloRD.GetAllRentDetailOfARent(_rentID);
                            //if (tbl != null)
                            //{

                            //    if (row.Cells["StatusColumn"].Value==Image.FromFile(pathAli))
                            //    {
                            //        row.Cells["StatusColumn"].Value = Image.FromFile(pathDel);
                            //    }
                            //    foreach (DataRow row1 in tbl.Rows)
                            //    {
                            //        if (row.Cells["CustomerID"].Value.ToString() == row1["CustomerID"].ToString())
                            //        {
                            //            row.Cells["StatusColumn"].Value = Image.FromFile(pathDel);
                            //            return;
                            //        }
                            //    }
                            //    row.Cells["StatusColumn"].Value = Image.FromFile(pathAli);
                            //}
                            ////row.Cells["StatusColumn"].Value=
                        }
            }
            catch (System.Exception ek)
            {

            }
        }

        private void btnBookIn_Click(object sender, EventArgs e)
        {
            if (int.Parse(txtOwnerID.Text) > 0)
            {
                MessageBox.Show("Phòng này đã có người thuê hoặc đặt trước, hãy chọn phòng khác", "Thông báo");
                return;
            }
            if (txtSetOwner.Text == "" || txtSetOwner.Text == "0")
            {
                MessageBox.Show("Chưa chọn khách chủ phòng", "Thông báo");
                return;
            }
            DateConfirm frm = new DateConfirm(CheckInput.STATUS_BOOK_IN);
            if (frm.ShowDialog()==DialogResult.Cancel)
            {
                return;
            }

            RentBLO bloRent = new RentBLO();
            RentDTO rent = new RentDTO();
            rent.RoomID = int.Parse(txtRoomID.Text);
            rent.UserName = HotelManagement.HotelManagementMainForm._curUserName;
            rent.RegisterDate = DateTime.Now;
            rent.CheckInDate = _checkDate;
            rent.Status = CheckInput.STATUS_BOOK_IN;
            rent.Note = txtNote.Text;
            rent.CustomerID = int.Parse(txtSetOwner.Text);
            if (!bloRent.BookIn(rent))
            {
                MessageBox.Show("Đặt phòng không thành công", "Thông báo");
                return;
            }
            MessageBox.Show("Thực hiện đặt phòng thành công", "Thông báo");
            room.LastOwner = int.Parse(txtSetOwner.Text);
            RefreshInformation();
            UpdatecmbRentPaper();
        }

        private void btnCheckIn_Click(object sender, EventArgs e)
        {
            if (txtOwnerID.Text == "" || txtOwnerID.Text == "0")
            {
                MessageBox.Show("Bạn phải chọn một phòng đã đặt", "Thông báo");
                return;
            }
            if (txtSetOwner.Text != txtOwnerID.Text)
            {
                MessageBox.Show("Bạn phải chọn đúng chủ phòng", "Thông báo");
                return;
            }

            if (int.Parse(txtNumOfPerson.Text) < dataGridViewCustomer.Rows.Count)
            {
                MessageBox.Show("Số người nhiều hơn mức tối đa của phòng là: " + txtNumOfPerson.Text + " người");
                return;
            }
            DateConfirm frm = new DateConfirm(CheckInput.STATUS_CHECK_IN);
            frm.ShowDialog();
            if (frm.DialogResult==DialogResult.Cancel)
            {
                return;
            }

            RentBLO bloRent = new RentBLO();
            RentDTO rent = bloRent.SelectRentFromID(_rentID);
            if (!RentPaperTest(rent))
            {
                return;
            }
            RentDetailBLO bloRentD = new RentDetailBLO();
            if (dataGridViewCustomer.Rows.Count > 0)
            {
                foreach (DataGridViewRow row in dataGridViewCustomer.Rows)
                {
                    RentDetailDTO rentD = new RentDetailDTO();

                    rentD.PaperID = _rentID;//========================================================================>>>>
                    rentD.CustomerID = int.Parse(row.Cells["CustomerID"].Value.ToString());
                    rentD.StartDate = DateTime.Now;
                    rentD.EndDate = _checkDate;
                    bloRentD.Insert(rentD);
                }
            }
            rent.Status = CheckInput.STATUS_CHECK_IN;
            if (!bloRent.UpdateStatus(rent))
            {
                System.Windows.Forms.MessageBox.Show("Cập nhật tình trạng phiếu thuê thất bại");
                return;
            }

            //Cập nhật lại tình trạng của phòng trong table ROOM
            RoomBLO bloRoom = new RoomBLO();
            RoomDTO room = bloRent.SelectRoomOfARent(_rentID);
            room.Status = CheckInput.STATUS_CHECK_IN;
            room.LastOwner = rent.CustomerID;
            if (!bloRoom.UpdateWhenRent(room))
            {
                System.Windows.Forms.MessageBox.Show("Cập nhật tình trạng phòng không thành công");
                return;
            }
            //Tạo hóa đơn thanh toán cho phòng vừa nhận
            BillBLO bloB = new BillBLO();
            BillDTO bill = new BillDTO();
            bill.RentID = _rentID;
            bill.BillMan = "";
            bill.UserName = HotelManagementMainForm._curUserName;
            if (!bloB.Insert(bill))
            {
                MessageBox.Show("Không tạo được hóa đơn thanh toán");
            }

            MessageBox.Show("Nhận phòng thành công", "Thông báo");
            UpdatecmbRentPaper();
        }

        private bool RentPaperTest(RentDTO pRent)
        {
            try
            {
                if (pRent.RentID <= 0)
                {
                    MessageBox.Show("Phiếu thuê phòng này không đúng");
                    return false;
                }
                if (pRent.RoomID.ToString() != txtRoomID.Text)
                {
                    MessageBox.Show("Phòng đã chọn không đúng như trong phiếu thuê phòng");
                    return false;
                }
                if (pRent.CustomerID.ToString() != txtSetOwner.Text)
                {
                    MessageBox.Show("Bạn phải chọn đúng chủ phòng", "Thông báo");
                    return false;
                }
            }
            catch (System.Exception e)
            {

            }
            return true;
        }
        private void txtRoomID_TextChanged(object sender, EventArgs e)
        {
            RentBLO bloRent = new RentBLO();
            int pRoomID = room.RoomID;
            int pStatus = room.Status;
            //MessageBox.Show(pStatus.ToString());
            if (pRoomID <= 0)
            {
                return;
            }
            
            if (pStatus<0)
            {
                return;
            }
            try
            {
                _rentID = bloRent.SelectFromRoomIDAndStatus(pRoomID, pStatus).RentID;
            }
            catch (System.Exception es)
            {
            	
            }
        }

        private void cmbRentPaper_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbRentPaper.SelectedIndex == 0)
            {
                ClearAll();
                return;
            }
            int tblRow = cmbRentPaper.SelectedIndex - 1;
            RoomBLO bloRoom = new RoomBLO();
            int pRoomID = int.Parse(tblRentBookInAndCheckIn.Rows[tblRow]["RoomID"].ToString());
            //cập nhật lại biến toàn cục room
            RoomDTO ro = bloRoom.SelectRoomFromID(pRoomID);
            room.RoomID = ro.RoomID;
            room.RoomName = ro.RoomName;
            room.RoomTypeID = ro.RoomTypeID;
            room.NumOfBed = ro.NumOfBed;
            room.NumOfPerson = ro.NumOfPerson;
            room.Direction = ro.Direction;
            room.Views = ro.Views;
            room.Status = ro.Status;
            room.LastOwner = ro.LastOwner;

            //cập nhật lại biến _rentID toàn cục
            _rentID = int.Parse(tblRentBookInAndCheckIn.Rows[tblRow]["RentID"].ToString());
            RentBLO bloR = new RentBLO();
            RentDTO rent = bloR.SelectRentFromID(_rentID);
            
            //RentDTO rent = new RentDTO();
            //MessageBox.Show(tblRentBookInAndCheckIn.Rows[tblRow]["RentID"].ToString());
            //rent.RentID = int.Parse(tblRentBookInAndCheckIn.Rows[tblRow]["RentID"].ToString());
            //rent.RoomID = pRoomID;
            //rent.UserName = tblRentBookInAndCheckIn.Rows[tblRow]["UserName"].ToString();
            //rent.RegisterDate = DateTime.Parse(tblRentBookInAndCheckIn.Rows[tblRow]["RegisterDate"].ToString());
            //rent.CheckInDate = DateTime.Parse(tblRentBookInAndCheckIn.Rows[tblRow]["CheckInDate"].ToString());
            //rent.CustomerID = int.Parse(tblRentBookInAndCheckIn.Rows[tblRow]["CustomerID"].ToString());
            //rent.Status = int.Parse(tblRentBookInAndCheckIn.Rows[tblRow]["Status"].ToString());
            //rent.Note = tblRentBookInAndCheckIn.Rows[tblRow]["Note"].ToString();
            //MessageBox.Show(this.rent.RentID.ToString());

            //Cập nhật lại list các tiện nghi của phòng
            Room_EquipmentBLO bloRE = new Room_EquipmentBLO();
            DataTable tblRoomEquipment = bloRE.SelectAvailableEquipentOfARoom(pRoomID);
            if (tblRoomEquipment != null)
            {
                lstRoomEquipment.Clear();
                foreach (DataRow row in tblRoomEquipment.Rows)
                {
                    lstRoomEquipment.Add(row["EquipmentName"].ToString());
                }
            }
            
            //MessageBox.Show(this.rent.RentID.ToString());
            RentDetailBLO bloRD = new RentDetailBLO();
            DataTable tblCustomer = bloRD.GetAllCustomerOfARent(_rentID);
            lstCustomer.Clear();
            if (tblCustomer!=null)
            {
                foreach(DataRow row in tblCustomer.Rows)
                {
                    CustomerDTO cust = new CustomerDTO();
                    cust.CustomerID = int.Parse(row["CustomerID"].ToString());
                    cust.Name = row["Name"].ToString();
                    cust.Gender = row["Gender"].ToString();
                    cust.IDNo_Passport = row["IDNo"].ToString();
                    cust.CusTypeID = int.Parse(row["CusTypeID"].ToString());
                    cust.BirthYear = DateTime.Parse(row["Birth"].ToString());
                    cust.PhoneNumber = row["PhoneNumber"].ToString();
                    cust.Address = row["Address"].ToString();
                    cust.Occupation = row["Occupation"].ToString();
                    cust.Nationality = row["Nationality"].ToString();
                    lstCustomer.Add(cust);

                    //Cập nhật lại biến _checkDate toàn cục
                    if (int.Parse(row["CustomerID"].ToString()) == rent.CustomerID)
                    {
                        RentDetailDTO rD = bloRD.SelectARentDetail(_rentID, int.Parse(row["CustomerID"].ToString()));
                        _checkDate = rD.EndDate;
                    }
                }
            }
            RefreshDataGridView(false);
            RefreshInformation();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <returns></returns>
        private void btnUpdateRent_Click(object sender, EventArgs e)
        {
            if (txtOwnerID.Text == "" || txtOwnerID.Text == "0")
            {
                MessageBox.Show("Bạn phải chọn một phòng đã đặt", "Thông báo");
                return;
            }

            if (int.Parse(txtNumOfPerson.Text) < dataGridViewCustomer.Rows.Count)
            {
                MessageBox.Show("Số người nhiều hơn mức tối đa của phòng là: " + txtNumOfPerson.Text + " người");
                return;
            }

            RentDetailBLO bloRD = new RentDetailBLO();
            DataTable tbl = bloRD.GetAllRentDetailOfARent(_rentID);
            foreach (DataGridViewRow row in dataGridViewCustomer.Rows)
            {
                if (row.Cells["EndDate"].Value != row.Cells["Temp"].Value)
                {
                    foreach (DataRow ro in tbl.Rows)
                    {
                        if (row.Cells["CustomerID"].Value.ToString() == ro["CustomerID"].ToString())
                        {
                            DateTime dt = DateTime.Parse(row.Cells["EndDate"].Value.ToString());
                            bloRD.UpdateEndDate(int.Parse(ro["RentDetailID"].ToString()), dt);
                            break;
                        }
                    }
                }else
                    if (row.Cells["EndDate"].Value==null && row.Cells["Temp"].Value==null)
                    {
                        RentDetailDTO rentD = new RentDetailDTO();
                        rentD.PaperID = _rentID;
                        rentD.CustomerID = int.Parse(row.Cells["CustomerID"].Value.ToString());
                        rentD.StartDate = DateTime.Now;
                        rentD.EndDate = _checkDate;
                        bloRD.Insert(rentD);
                    }
            }
            ClearAll();
        }

        private void ClearAll()
        {
            dataGridViewCustomer.Rows.Clear();
            cmbRentPaper.SelectedIndex = 0;
            txtRoomID.Text = "";
            txtDirection.Text = "";
            txtEquipments.Text = "";
            txtNote.Text = "";
            txtNumOfBed.Text = "";
            txtNumOfPerson.Text = "";
            txtOwnerID.Text = "";
            txtOwnerIDNo.Text = "";
            txtOwnerName.Text = "";
            txtPrice.Text = "";
            txtRoomName.Text = "";
            txtRoomTypeID.Text = "";
            txtRoomTypeName.Text = "";
            txtSetOwner.Text = "";
            txtStatus.Text = "";
            txtViews.Text = "";
            lstCustomer.Clear();
            lstRoomEquipment.Clear();
        }
    }
}
